<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <!-- 仅仅反转字母
  给你一个字符串 s ，根据下述规则反转字符串：
  所有非英文字母保留在原有位置。
  所有英文字母（小写或大写）位置反转。
  返回反转后的 s 。
  示例 1：
  输入：s = "ab-cd"
  输出："dc-ba"
 -->
</head>
<body>
  <script>
    var reverseOnlyLetters = function(s) {
    const n = s.length;
    const arr = [...s];
    let left = 0, right = n - 1;
    while (true) {
        while (left < right && !(/^[a-zA-Z]+$/.test(s[left]))) { // 判断左边是否扫描到字母
            left++;
        }
        while (right > left && !(/^[a-zA-Z]+$/.test(s[right]))) { // 判断右边是否扫描到字母
            right--;
        }
        if (left >= right) {
            break;
        }
        swap(arr, left, right);
        left++;
        right--;
    }
    return arr.join('');
};

const swap = (arr, left, right) => {
    const temp = arr[left];
    arr[left] = arr[right];
    arr[right] = temp;
}
console.log(reverseOnlyLetters("ab-cd"));
  </script>
</body>
</html>